package com.ruoyi.market.service;

import com.ruoyi.bizsys.domain.AppUserMark;
import com.ruoyi.bizsys.domain.ProductInfo;
import com.ruoyi.market.domain.MarketUser;
import com.ruoyi.market.vo.MarketParamVo;
import com.ruoyi.market.vo.MarketUserLabelVo;
import com.ruoyi.market.vo.MarketUserVo;

import java.util.List;

public interface IMarketUserService {

    /**
     * 实名成功未授信
     * @param marketParamVo
     * @return
     */
    List<MarketUserVo> selectRealNameAuthList(MarketParamVo marketParamVo);

    /**
     * 实名失败 由于 生日错误、bvn手机号输入错误
     * @param marketParamVo
     * @return
     */
    List<MarketUserVo> selectRealNameAuthLogList(MarketParamVo marketParamVo);

    /**
     * 授信 成功且未提现
     * @param marketParamVo
     * @return
     */
    List<MarketUserVo> selectCreditApplyList(MarketParamVo marketParamVo);

    /**
     * 授信 非风控规则导致失败 apply_status in (10,11)
     * @param marketParamVo
     * @return
     */
    List<MarketUserVo> selectCreditApplyByRiskList(MarketParamVo marketParamVo);

    /**
     * 绑卡 成功
     * @param marketParamVo
     * @return
     */
    List<MarketUserVo> selectCustBankCardList(MarketParamVo marketParamVo);

    /**
     * 绑卡失败 需要营销的用户
     * @param marketParamVo
     * @return
     */
    List<MarketUserVo> selectCustBindCardLogList(MarketParamVo marketParamVo);

    /**
     * 提现 失败需要营销的用户
     * @param marketParamVo
     * @return
     */
    List<MarketUserVo> selectLoanOrderList(MarketParamVo marketParamVo);

    /**
     * 提额 后未提现需要营销的用户
     * @param marketParamVo
     * @return
     */
    List<MarketUserVo> selectIncreasedLimitLogList(MarketParamVo marketParamVo);

    /**
     * 批量新增
     * @param marketUserList
     */
    void batchAddMarketUser(List<MarketUser> marketUserList);

    /**
     * 通过用户id 来修改
     * @param realNameAuthList
     * @return
     */
    int batchUpdateMarketUser(List<MarketUserVo> realNameAuthList);

    /**
     * 查询需要营销的用户名单
     * @param marketParamVo
     * @return
     */
    List<MarketUser> selectMarketUserByState(MarketParamVo marketParamVo);

    /**
     * 将 state1 的数据 改成 state2
     * @param state1
     * @param state2
     */
    void updateMarketUserState(String state1, String state2);

    /**
     * 修改营销用户信息
     * @param marketUserList
     */
    void updateMarketUser(List<MarketUser> marketUserList);

    List<MarketUserVo> selectUnregisteredPhone(MarketParamVo marketParamVo);

    List<MarketUserVo> selectNoRealNameList(MarketParamVo marketParamVo);

    /**
     * 还款未提现用户数据查询
     * @param marketParamVo
     * @return
     */
    List<MarketUserVo> getRepaymentNotWithdrawn(MarketParamVo marketParamVo);

    /**
     * 剔除用户查询
     * @param marketParam
     * @return
     */
    List<MarketUser> selectRejectMarketUser(MarketParamVo marketParam);

    /**
     * 查询用户标签数据
     * @param marketUserLabelVos
     * @return
     */
    List<AppUserMark> selectAppUserMarkList(List<MarketUserLabelVo> marketUserLabelVos);

    /**
     * 查询标签用户
     * @param intervalTime
     * @return
     */
    List<AppUserMark> selectAppUserMarkListByTime(int intervalTime);

    /**
     * 授信成功为提现
     * @param marketParamVo
     * @return
     */
    List<MarketUserVo> selectCreditLoanIouList(MarketParamVo marketParamVo);

}
